{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Handcrafting a text-based game with TextWorld\n",
    "This tutorial shows how to make a custom text-based game using the TextWorld's API."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## `GameMaker`\n",
    "Let's make a game consisting of two rooms and where the goal is to place an object from the player's inventory inside a container located in the other room."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import textworld\n",
    "from textworld import GameMaker\n",
    "\n",
    "# Make the generation process reproducible.\n",
    "from textworld import g_rng  # Global random generator.\n",
    "g_rng.set_seed(20180916)\n",
    "\n",
    "# GameMaker object for handcrafting text-based games.\n",
    "M = GameMaker()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Documentation about the `GameMaker` API can be found at\n",
    "\n",
    "https://textworld-docs.azurewebsites.net/textworld.generator.html#textworld.generator.maker.GameMaker"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### First, define the layout of the world."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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yGtoaFy6fEWxp/jYmrZ9F03vnt3LW9A30bTwq4i+f9WVRx91ZEQsW7a8cLoQAGCHa7Hf61ewbu26mpqa6uoXzz73vLq6umKPAwC0TC38GNUV373qiu9eVewp2MGOOOKIxsbGwvJOO+3cp0/v0aNPHfa+u7wCUPDiSy9dNG7ctoedOnXa+/N7//0Zf9+nT5+izdRCtfBjVLRgrVq1qqysfPfdDfPnz7/iin96+umniz0RQPNVWVlZWVm5evXqWTNnXTB27IqVpXslVjOlqChVZ5155uTJk+/91b1dOneJiEceeaTYEwE0XzfdfPPkyZN//OMfR8TGTZumTZ1W7IlamhZ+1o8Wr2uXrnt//vMzZkzfsOHdwppf/+bXD058cOXbK7t26Xri10489ivHbmf9mf945htL3hg9evSCBQteeeWVvn37XnLxxT//xS/mzp3bY7ce37ns0r0GDizaewPY0Q444IAOHTqsW7duw4YNEbF58+a77rpr5syZ7777bv8BA84+66z9998/IpYtX3bHbXe8+GJ1UzQdcMCBY84d03237jNmzPjBD37QuXPnE044fsJ9E+rq679+2mkdO3W65+67N27adPjhh48dO7asBX1276+lqChtq1etfuWVlyOid+/PRcSECRPuvPPOiKiqards+bJbbr6lqm3VEUce8VHrCxu5995721dV1dXVLVq06Lzzzy8vL6+vr39jyRu33nLLbbfdVrw3B7CDvfjSS4V7NPbp3Scirrnmmjlz5pSVlbVp02bhK69cfvnld99zd4ddOnz7om+vWrWqsrJ1U1PjM888s2TpkrvvuruwhVWrVt1zz89atWpVW1v707vuKisra9u2zaZNmx988MGhQ4cOHfrZvaTVWT9K1d333DNq1KiTTj5p5cqVO+208+hTTmlsbJxw//0Rccopp0ya9PCxxx4bEf8x/j8+av22TY0cOfKhSZNGjBgREZ06d5o48TcXXHhBRCxevLihoaEo7w5gxxp34YWjRo26aNy4pqamPffc87DDRixZsmTOnDkR8cMf/nDiAw/ssceAurq6+yfcP2XqlFWrVrVv3378veP//Zf/3rp16z+++cdZs2Zt29TPfv6z2++4IyKamprGXjB24sQHunbpEhGLFi0q1rtrDhQVpaqhoWHbHTGuuebqnr16rV2zdu2aNRExbNiwiDjooIMi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AECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBklRV7AFqOpqamYo8AAMXhGBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGQpKgCALEUFAJClqAAAshQVAECWogIAyFJUAABZigoAIEtRAQBkKSoAgCxFBQCQpagAALIUFQBAlqICAMhSVAAAWYoKACBLUQEAZCkqAIAsRQUAkKWoAACyFBUAQJaiAgDIUlQAAFmKCgAgS1EBAGT9N4TujWF0IbegAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<PIL.Image.Image image mode=RGB size=795x600 at 0x7F37C7DA9128>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roomA = M.new_room(\"Room A\")\n",
    "roomB = M.new_room(\"Room B\")\n",
    "corridor = M.connect(roomA.east, roomB.west)\n",
    "M.render()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Place the player somewhere."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<PIL.Image.Image image mode=RGB size=795x600 at 0x7F37C7C74358>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "M.set_player(roomA)\n",
    "M.render()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Add two objects to Room A."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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79mjx5tTX3UTFQBrp6goVQsWLLj33ns/4cZrPjD9ueeemzp16kYbCoDNlKKiVE1ZlzB671fQjHvySd/xB8CGpagoSY2NjdOmTVu/506fNm3VqlUbdBwANnc+PYGSVCgUGhsb27Vr98m3z+VyTctl5eWNJfgVDQBsyhQVJamiouLrxx779WOPLfYgABDhqh8AQDpFBQCQSlEBAKRSVAAAqRQVAEAq7/UDgM3LGaefPmHixKblVtXVXbt1O/LII4cPH17cqUqdogKAzVGnbTp179Z94cKFU6dOveCCC1q0qBo6dL9iD1XCFBUAbI6G7jf0pJNOindPWT3/wnNDh+43b/68q6686sUXXywvL+vXr//JJ53cuUvniHj55Zevveaa115/vXXr1kP2HXLc8cdXV7c85mvHzJ4z+9hjjx03btzMmTMHDx68//77/+GPf1i6ZOm+++579tlnl5WVFftVfnrcRwUAm693Fr6zaPGSiGi7ddv6hoazzzp77NixHTt06Nix45NPPnnW2WfV1dW+PWPG2Wf/YMLEiX379o1C4c677rz44t+s2cOdd97Vtm3b+vr6sWPH/vY3v+mxbY+6urqHHnroqaeeLt7LKgJFBQCbo9tvv33YsGFHffmoWbNm9u7T5/Ajjhj/0kszZ86srm55+e9///vfX9GhfYc5c+Y8++zzD4we3dBQv9vuu1988cW//vWvI+LRRx9bunRp036+deKJF154Yc8ePSPi6K8dff755/fr1y8iZsyYXrwXVwSKCgA2R5226TRgwICm5XPOOWfrNm1q5tdERMcOnaqqqsrKypqu982bN7empiYitu3ePSK6duvW9JS5c+c1LZRVlEVEZWVFRJSVV0REZWVlRGxu36CqqABgczR0v6GXXHLJDjvsEBE33vjniGhKqJqFC+rr6/P5/Nw5cyKiY4cOXbp0iYjZs2dHxKzZs5qe3qFjh2JNvmlyZzqblhnv1C9cVFvsKZqP+UuzEVs0La+oj/bVxR0H2OQcf/zx55xzzhNjn5gyZeou/fr16tnzrWnTvn3qqZUVFfNrajp27LjnXnv32X6722677fnnnz/77LNmzpoVEUP2G7J1mzbFnn3ToqjYtHRqla1u2aLYUzQfWzZk1ixXbkbvuQE+qT333LN///6vvPLKdddde+GFF/7y/F/94ao/vvTSP/P5GDx48Ekn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NWbXvageeXBUzx49PurR1lttdenlVzz51NONjY1Lly774IW5BQsX1tfXH//N/2z6sRDRequtPnRXhUJh5cqVrVq1+qhjFQqFZcuWbfURTwegWBQVJayQzzesWrlV+20+ycZVrbbM53O5xsaKFht4jF+cf2FNzYKbb7phi1at7vr7PRdfcun7NujQoUNZWdnfbrul3y5rO5cWEcuXLx8zZsyQIUM6der0oRu8/PLLEyZM+PKXv1yx1tuwAPiUuY+KEla3akWmrCyb/fgPMoiItp275xobGhvqP37TdVRTsyCbzeYaG197/fW/33NvY2713U7Vrarfnjlr5cqVlRUVXzjs3355/oXz5s2vra296+57rvvTnz+4n0Kh8Oyzzz7xxBPjx4/P5/Mf3CCXy910001jx46dOnXqBn8VAKRQVJSw2uWLK1pUfcKNt9l2u8aG+sb62g0+xjlnnblw4cLBQ/Y/43tnDdp9t+rq6tra2og46otHvDpp0oEHj4iIn/3kx3377nj4l768x+Ahf7vzrv2GfOaD+8lkMoMGDdppp52qqqo+9BPSy8rKKisrhw8f3rt37w3+KgBI4aofJWzl0sVbtP3wq2Mf1KbDNoV8vr521TodomePHm9OffVDH7rhuqubFnr37nX7X/+yZv2aj6radeDAZ8Y93rTcqlX1eef+8Lxzf7j2w7Vu3XrXXXedOHFi//79t9566/c+lM/nn3rqqblz5x500EEtW7Zcp1cBwMbmHBUlbMWi+W07b/sJNy4vLy+vbFG36uM/baGIstnszjvv3Lp16wcffHDatGkrVqzI5/P19fULFy585JFH7rrrrlNPPbVNmzbFHhOA93OOihLWumO31h27ffLthx75ja3addx482wQW2655QEHHPD0008/9thjW265ZU1Nzfjx4994442VK1ced9xx/fr1K/aAAHwIRUUJ69hzx3Xafvf9R26kSTastm3bDh8+fNasWfPnz+/UqVM2m91qq626devm7BTAJktRwaaosrKyV69evXr1KvYgAHwi7qMCAEilqAAAUikqAIBUigoAIJWiAgBIpagAAFIpKgCAVIoKACCVogIASKWoAABSKSoAgFSKCgAglaICAEhVXuwB4P95cnpkij1Dc7Jo1f8t1zUWbw6A5q48k/H3FxtGoVBI38nVL8TVL6Tvhg+xvL7YEwA0X676AQCkUlQAAKlc8mOD2SBX/QCgFDlHBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKRSVAAAqRQVAEAqRQUAkEpRAQCkUlQAAKkUFQBAKkUFAJBKUQEApFJUAACpFBUAQCpFBQCQSlEBAKT6X0pJyppFCGYEAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<PIL.Image.Image image mode=RGB size=795x600 at 0x7F37C7B17550>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "note = M.new(type='o', name=\"note\")  # Provide the type and the name of the object.\n",
    "note.infos.desc = \"Bravo! You can read.\"  # Text to display when issuing command \"examine note\". \n",
    "supporter = M.new(type='s')  # When not provided, names are automatically generated.\n",
    "roomA.add(supporter)  # Supporters are fixed in place.\n",
    "roomA.add(note)  # When added directly to a room, portable objects are put on the floor.\n",
    "M.render()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Supported types of objects\n",
    "\n",
    "type | name | description\n",
    "--------|-----|------------\n",
    "'r' | room | can contain objects, can be connected with other rooms\n",
    "'d' | door | (un)lockable, openable/closable\n",
    "'c' | container | can hold objects, (un)lockable, openable/closable\n",
    "'s' | supporter | can hold objects\n",
    "'o' | portable object | can be carried by the player\n",
    "'k' | key | subtype of portable object, match a door or container's lock\n",
    "'f' | food | subtype of portable object, can be eaten if edible\n",
    "'oven' | oven | subtype of container, provide a heat source to cook food item\n",
    "'stove' | stove | subtype of supporter, provide a heat source to cook food item"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Let's add a locked door between the two rooms."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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yFwA7FoUFXns97fc8s4772zOlg2396yoqLj1ttu26ObpvXr2nDf3TRdRAbBpiop8tWLFikcffXQzN95ww/RXXnll7ty5220oAHZRiop8NWdLwuiDH0Ez+YUXfMYfANuWoiIvpdPp+fPnb91zF8yfX11dvU3HAWBX5+4J5KVcLpdOp9u1a7f522cymYblglQqnYcf0QDAzkxRkZcKCwu/evrpXz399MYeBABCUFQA20Q6na6tc+7zYyWSydLiosaeArYjRQWwDVSsr86GXGGqoLEH2Umtr6gsLd7cl+khHykqgG2jeUlxcTOnYTZufWVNY48A25f3+gEAxFJUAACxvOoHALuWiy68cMbMmQ3LzUtLu3XvfuKJJ44ePbpxp8p3igoAdkWdOnfq0b3HypUr586de8011zRrVjxq1MGNPVQeU1QAsCsadfCosWPHhvdPWb069ZVRow4uW1528003v/baa6lUwYABA88de26Xrl1CCNOnT7/t1lvfevvtVq1ajTxo5JlnnVVaWnLaf522ZOmS008/ffLkyYsWLRoxYsShhx76u9//bt3adQcddNBll11WULALvftVUQE0fXVTHq97/K6Pe3RVXaayPtuw3PWUsa1GHLGJXeVyuQULFixbtqy4uLhnz55t2rTZxrOyY61auWr1mrUhhLZt2tbV11926WWLFi3q3atXqjD1wgsvzJs377bbbl1etvyyy75TX183ePDgpUuWPPjQg6vXrLriiisb9vDggw/167f3vHnznn/++demTt13wICpU6c+9dRTI0cefPDBIxv1m9uhFBVA05dbsaxuxsvv1IT3w+k/rKxNV2ZyxcnQtVmifvSJm9jP0qVLJ02atHr16oKCgmw2O3Xq1D59+owcObKoyG0j8s/9999///33Nyz36dv3+BNOmPb664sWLSotLfn1b35TWFh46ldOXbp06csvvzpnzuz6+rohQ4f+/Gc/W/Tuu18944xnnnn2wgsvanju18855zOf/czZZ509f8H8U//r1FNO+dLFF188ffr0hQsXhKCoAGhasiGU14X+zTfyUCoXKtLhX9Wha7NN7aGysnLcuHHZbHbo0KGDBg1at27dlClT3n777Ww2e8QRRyQSie00OdtJp86dOnXsNH369BDC5Zdf3qZ16/Ll5SGEjh06FRcXhxC6dO1SvqK8rGxZeXl5CGH3Hj1CCN26d294+rJlZQ0LBYUFIYSiosIQQkGqMITQUNi72ieounsCwK6iIBF2SyU++k+LgkTL1CcX0aRJk9Lp9CGHHDJ8+PBmzZp16NBhzJgxHTt2fOeddyorK3fId8C2NOrgUddff/1ee+0VQrjzzj+FEBoumSpfuaKuri6bzS5bujSE0LFDh65du4YQlixZEkJYvGRxw9M7dOzQWJPvnJyjYueycFXdytXurbzNLF+XDKFFw3JlXWhf2rjjkMcqKirKyso6duzYu3fvDfFVWFh4yCGH3HfffRMnTjzuuOMad0K2zllnnXX55ZdPen7SnDlz9x0woHevXu/Mn/+N888vKixcXl7esWPH/Q/4VN8997jvvvteffXVyy67dNHixSGEkQePbNO6dWPPvnNRVOxcOjVPlpZs8oUHtkTL+n+fdijahd5zw7ZXV1dXW1vbtm3bVOo/fnC0bt26pKRk6dKluVzOC3/5aP/99x84cOAbb7zxhz/cdu211/7vT3/yu5t///rr/8hmw4gRI8aee25paUlpaffrrrvu1ltvnTVrVvPSFscd9/mzv3Z2Yw++01FU7FyaNUuVFPtruc2U1P17uVBRNZIDDz60rGx5CKFVq1b7Dx/2rYsu6Ndv78YeaovlcrlcLtepU6cPrU8kEh07dlywYEEmk/lQbLHTuuHGGz/45S9/+csNy506drrqqis/+pQBAwZ8cLMGd95154blm26+ecPytddeuy3GzDOuowLY7n764/+ZN/fNx//+0H6DB530pVPfnDUrZm+ZTGZbDbb56uvrQwjNmm3kFHLDVczZ7MbeRgi7DL9PwK5i8rNPV65e1thTNFlDhg7v06f3prfp0rnzeWO/vnTpsmuu+8Wfbr81hLB4yZIf/PDHL73ySutWrY///OcuPP+8wsLCEMJd9/z5lttuX7VqVf999rnqiu/t23+fEMLRY47bc889pk2bPmLEAT+75ic74JsKIeRyuUmTJi1fvryhqKZMmTJ16tQPbbN+/fpcLvfHP/6xtrb2sMMOGzBgwEf3k07X33333Tti4l1VUVHR8BG70K0KdkKKCnYVN/z8JxXr1jb2FE3WRd/81icWVYPDDzv06+d+I5PJZLPZr551zgH7D39p8vMrV60c+40Ls9nspZdc/NDfHrn+hl/9/qbfDByw71/uvf8rp53x9PjH2rdvH0JYsmTpPXf+sWvXLls3ZDoXVtTnPrp+dTpXkc5lN/JIyGazsz5wRq2iomKje04kEmvWrFm7du3ixYs3WlTr16+//vrrt25sNkcikbjvQUXVmBQV7Cou+vb3nKPafoYMHbaZW3bo0D6TyVRUrJ8xc+bixUuufOjykpKS5s1Lv/Ptb51/0cWXXnLx3ff85bRTvzJs6JAQwumnnfrQI39/+JFHv3bWGSGEU07+Qo8e3bduwmQIvYpD9cZeMKzJhtps2LNTNrndfia0aNHi4osv3l575/1bQNGIFBXsKkYeeoS7J2w/q9ds/OTNR5WVlSWTyZYtWywrK+vUsWNJSUnD+p49d6+srFq1enVZ2fKePXffsH2v3Xd/99134ydMJhJdPuZ9tIW5xPqC0LJ/utXe9WEz3q6Xy+XS6XRBQUEyubkX46ZShaeeeupmD8vWeOfdpY09wi5NUQHsUBOefHr/4cMKCgq6d+tWvmJFXV1dw9mFBQsWFhcX79ayZbduXRcvXrJh+/kLFx55+GHxx83kctPXh+qNXT6+ujZXlcm1e7mw1xuFu5/3ybtasWLFhAkTevToMWrUqPjBoGnwXj+AHSGXyy1atPgX19/wyKOPfefSb4UQhg8bunuP7j+55rrq6uqly5b94vobvnjSialU6rRTv3zHn+6a/saMdDp9731/nTv3reOP+9w2maFZIgxpsZF/BjQP+5SG6tpEtnazfiisXbu2qqqqrKxsm0wFTYNzVADb3XevuOq7V1zVqlWr4UOH/PXeexreu5dKpf5w6+9++KOfHHTI4clE8oTjj7v0kotDCJ8Zc+z69ZUXf/uyZcvK9tpzjz/e9vtu3bpukzGSiVBSsJFX9ZolE/UFIRE2dmn6xvTt23fKlClDhgzZJlNB06CoALavFyc9+3EPdenc+ebf3PjR9ad88aRTvnjSh1aOf/yRbTrX1kskEm6PntcuuvDCGTNnNiy3btWqV+/eX/rSl/bff//GnSrfedUPgC225557tmrVqrGnIEqnzp2GDRtWUlr6+uuvf//73//X22839kT5zTkqALbYiBEjGnsEYo06eNTYsWPr6+u/dMopa9aufWPGjL577NHYQ+UxRQWwq6jJhkU1G7lYakVdbv3H3OGTJmz9+vWLFi9avGhxZVV1CKFPnz6NPVF+U1QAu4RkCHuWho1mU106kQi51hv7gbCl10u5viqPjBs3bty4cQ3LRx999KBBgxp3nnynqACavtTeQ0q+dGHJxzxams7Vvp9apXv+x2fIJJPJz372sytWrMjlPuEUVmVlZSaT6dev3zYYlx3iwBEHjj5qdGVl1W233jJ+/Ph9+u/zuc9um/t07JoUFUDTV7D3kIK9P/ZmB8WbfG63bt26deu2zUei0XXv0f2QQw4JITz//HOvvvrqrDdnKaoYioqmJpvL1dRnsplscVFhamO33gEghPD8pOffeeedioqKOXPmhBAG7LuRj7hm8ykqmojqusykt1bMK6+ctXTd+pp0uq62KFe3Z4eSPh1aHDl0j9YtNv1LOMAup2xZWdmysmbNmvXYvccxRx8z5jNjGnui/KaoyHvZXG7usvW/mDA3+4FrblNFzbKh2ey1uX8sePfuZ6ZddephA3t3ThW4ARtAuOHGjdxXlkiKivxWWZu568UFry1Ynd3YW5gSiURp6/aFJaX/c/czg/t0+uYJI52sAmB78Cs7eayqNv2biW+/8s6qzMffSCeRSBQVN9+tS5/X55Vfdsvji8rXbtEh5i9Y0Gev/r/+7c0fXNlnr/6TX3hxE896YvyTzzz7/BYdiHzXrFlhMum6vY9VUlzU2CPA9qWoyFd16ezPx781Z1nF5mxckEo1b9uxbE3lT/7yXGVN3ZYe64Zf/Wb6GzM2f/vxE5589rnntvQo5LXSkuKiwsLGnmLn1aZVy8YeAbYvRUVeyoXw+rtrFqys3MztE4lEs+a7pZqVLl6x9sHJMzOZ7BYd7tBDRl387ctqamo++tBd9/z5kCOOGjhk+ClfOW3mm7NCCEccdey48RPuf+Cho459733If7n3/lGHjx487FPnjP3G8uXlW3RoAPKCoiIv1aWzr76zeouekkgkmrfuEEJ4dc6i1eurt+i5l15ycWEq9dNrf/ah9Q/97ZHrb/jV//3s2tdenvKZY4/5ymlnrFix4ukJ4449+qiTv3DChHF/DyE89vi4a3/+f7+58Zcvv/Bc2zZtvv2d727RoQHIC4qKvJTOZJes3rIqCiEkCgpCIrF6fc2WvvBXVFR4/c+vu/e+vz4/afIH1999z19OO/Urw4YOKSoqOv20U/v06f3wI49+6Ll33v3n00798sAB+xYXF194/nmTX5hSsX79lk4OwE5OUZGvtvoq4EQitxUfPbbPPv0u/uaFl17+vdWr12xYWVa2vGfP3Td82Wv33d99990PPXHJ0qU3//7WfvsO7rfv4COOOjaZTC5dumzrJgdgp+XuCeSlwoJkt9bFS9Zs2WmqbKY+5HKtW5SUbtXbjs45+8xnnn3uiqt+sGFNt25dFy9esuHL+QsXHnn4YR96VpfOnU//r1O/dtYZW3FEAPKFc1TkpcKC5ODdW2/RU3K5XNWaFSGEQb27tG6+NXelSiaTv7jumkmTX9iw5rRTv3zHn+6a/saMdDp9731/nTv3reOP+1wIobR56buLFldVVYUQTj7pxFv/cPv0N2ZkMpmpr/3jyqv/J5vdsuviAdj5OUdFXkokwvBebZ6fWz532WZdk5TL5arWlKdrq/fp0fHLhw3a6pund+vW9YdXX3nJZZc3fPmZMceuX1958bcvW7asbK899/jjbb/v1q1rCOHkL5ww9hsXHn7UsS9Nfu6kE0+orq65+JJLly4r271H90suviiZ9JsMQFOTyOU+9taIsMMkrnhv4Y9fCF8dsrnPyoXwyD+XvDxv1fKK2o3+Tc7lcrlsNl1bXVe1rvtuqUF9Op88amBps13opkGL14Xu1723XP690L60UacBtqd33l3a2CNsve5dOhamChp7iijOUZHHEiF8fkjX4/brurKy7h/zV704b9XydTXVdZlsuj6Tri/I1LQuDgN6tPtUv359u7TbpUIKgB1MUZH3EonQvkXRUQM6HzWgcyaby2ZzmWw2kUgUJBMFycRWvK0PgB0sm82G4BwV7DQaKqrQWy4A8somPp41X/jBAwAQyzkqAGgKUu9f2V1UmMqX9xTX1L73CRapVH4MvAmKCgCagh5dOjb2CLu0vE9CAIBGp6gAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYPtePncuStfVr1tU29hRNx8q1BSGUNCxX1zfuLABNmaJi59K6Wa6goKCxp2g6igsTG5YTiU1sCEAURcXOpbS4qGXzxh6iCVmX+fdysf/cAbYb11EBAMRSVAAAsRQVAEAsRQUAEEtRAQDEUlQAALEUFQBALEUFABBLUQEAxFJUAACxFBUAQCxFBQAQS1EBAMRSVAAAsRQVAEAsRQUAEEtRAQDESjX2AMDHqq2tXbduXVFRUcuWLZNJv/8A7Lz8Pxq20lfPOueXN/56++0/l8s9++yzt99++wMPPLBkyZLtdyAA4jlHRV6qrawY99urs5nM5mxcXV9fUV234cuCZMHxY7/boXuvzXnu/AULDh99bMNyKpXq2qXLCccfd/55YwsKCj7xuU+Mf7JZs2aHHTpqcw70UZlM5uGHHz777LNnzJgxZ86cbt26JRKJrdsVANuboiIvJVOprnsPzuWy786YunrZwk1vXFlTt666LoTQY4/+3fcemEwki0pKt+hwTz3x2O6798hkMrNmz77gokuSyeQF3zj3E581fsKTu+3WcquLKplMHnzwwS+99FJxcXHPnj3lFMDOTFGRlwqblRxw3FdDCOtXLf/Eotqgfdfuo788disOlyxIplKpVCq13+DBY8Yc8+rUqR98NJfL3fS7W/74p7tqqqsHDRr40x//T48e3Y846tjFS5Ymk8kXX3plwri/19XVXffz/3vw4b8VFhZ+dsyY71x2SVFh4SaOWFFRsXr16oEDBz788MN77713CKG8vLx9+/a6CmDn5Doq8ltdVeUnbrOhQlYtW5zL5bb6WOl0+s1ZsyZMeGrwoEEfXH/7HXc+8OBDjzx0/8tTni8qKvrBj34cQnh6wrhjjz7q5C+cMGHc30MIP/rfa1775+vjH/v7ow8/+Mqrr9562+2bPtY///nPO+6447777isvL586deodd9wxbty4dDq91cMDsF05R0V+q16/tt9Bx3Tp238T26Qzubp0ZtqkJyrXrs5lMonUFv+1b7iUqqCgoHOnTmPGHHPB+ed98NExxx79mWOP6dSpY8Pyjb/+7YeeXltbe/8DD/7hlps7dGgfQjjj9NNuv+PO88Z+fRNHHDVq1KhRo0IIN9100wEHHDBs2LAtnRmAHUlRkd+qK9YMPPz41h27feKWyxa89fbrL2cy6eSWF9XEJ8f16tnz4x5ttdtuN/76ty9MeTGdTq9bV/HRF+ZWrFxZV1d31tf+u+HLXAitdttto7vK5XJVVVXNmzf/uGPlcrmKiordPubpADQWRUUey2Wz9dVVu7XvvDkbFzdvmc1mMul0YbNtPMaPf3ptefmKe+66o0Xz5g/97ZH/u/7GD23QoUOHgoKCv9735wH7bupcWghh/fr1EyZMGDlyZKdOnTa6wfTp02fMmPHFL36xcJOXYQGwg7mOijxWW12ZKChIJj/5RgYhhLZdemTS9en6uk/edAuVl69IJpOZdPqtt9/+2yOPpjPvXe1U2rz03UWLq6qqigoLP3/cZ//3p9eWlS2vqal56OFH/vDHP310P7lc7uWXX540adK0adOy2exHN8hkMnfdddfzzz8/d+7cbf5dABBDUZHHatavKWxWvJkbd959j3R9XbquZpuPcfmll6xcuXLEyEMv+talw4YOKS0trampCSGc/IUT3pw16/Cjjg0h/PCqK/v12/v4k744fMTIvz740MEjP/3R/SQSiWHDhu2zzz7FxcUbvUN6QUFBUVHR6NGj+/Tps82/CwBieNWPPFa1bk2Ltht/deyjWnfonMtm62qqt+gQvXr2nDf3zY0+dMcfbmlY6NOn9/1/uXvD+g23qtpv8OCXJj/XsNy8eenVV3zv6iu+t+nDtWrVar/99ps5c+bAgQPbtGnzwYey2eyUKVOWLVt25JFHlpSUbNF3AcD25hwVeaxy9fK2XXbfzI1TqVSqqFlt9SffbaERJZPJ/v37t2rV6sknn5w/f35lZWU2m62rq1u5cuXEiRMfeuih888/v3Xr1o09JgAf5hwVeaxVx+6tOnbf/O1HnXjGbu06br95tomWLVsedthhL7744rPPPtuyZcvy8vJp06b961//qqqqOvPMMwcMGNDYAwKwEYqKPNax195btP3QQ8dsp0m2rbZt244ePXrx4sXLly/v1KlTMpncbbfdunfv7uwUwE5LUcHOqKioqHfv3r17927sQQDYLK6jAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIlWrsAeA/vLAgJBp7hqZkdfW/l2vTjTcHQFOXSiT8/GLbyOVy8Tu5ZWq4ZWr8btiI9XWNPQFA0+VVPwCAWIoKACCWl/zYZrbJq34AkI+cowIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABiKSoAgFiKCgAglqICAIilqAAAYikqAIBYigoAIJaiAgCIpagAAGIpKgCAWIoKACCWogIAiKWoAABi/T/P1QOJAZ0vwwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<PIL.Image.Image image mode=RGB size=795x600 at 0x7F37C79D10F0>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "door = M.new_door(corridor, name=\"door\")  # Door and room have their own \"new\" method, no need to provide the type.\n",
    "M.add_fact(\"locked\", door)  # Add a fact about the door, i.e. it is locked.\n",
    "M.render()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### Supported types of facts\n",
    "\n",
    " fact/predicate | description\n",
    "----------------|------------\n",
    "__match__(key, container/door) | The `key` matches the `container/door`'s lock.\n",
    "__open__(container/door) | The `container/door` is open.\n",
    "__closed__(container/door) | The `container/door` is closed.\n",
    "__locked__(container/door) | The `container/door` is locked.\n",
    "__edible__(food) | The `food` is edible, otherwise needs to be cooked first."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Create a key object that be used to unlock the door and place on the supporter object."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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AKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVP0fyvbh7+UlzJsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<PIL.Image.Image image mode=RGB size=795x600 at 0x7F37C78957B8>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "key = M.new(type=\"k\", name=\"old key\")  # Create a 'k' (i.e. key) object. \n",
    "M.add_fact(\"match\", key, door)  # Tell the game 'old key' is matching the 'door''s lock\n",
    "supporter.add(key)  # Add the 'old key' on the supporter.\n",
    "M.render()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Create the object carried by the player and the container (initially closed)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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AEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFUUFQAAgCqKCgAAQBVFBQAAoIqiAgAAUEVRAQAAqKKoAAAAVFFUAAAAqigqAAAAVRQVAACAKooKAABAFUUFAACgiqICAABQRVEBAACooqgAAABUUVQAAACqKCoAAABVFBUAAIAqigoAAEAVRQUAAKCKogIAAFBFUQEAAKiiqAAAAFRRVAAAAKooKgAAAFX/B686BAMcnn92AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<PIL.Image.Image image mode=RGB size=795x600 at 0x7F37C77AC198>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "obj = M.new(type='o')  # New portable object with a randomly generated name.\n",
    "M.inventory.add(obj)  # Add the object to the player's inventory.\n",
    "\n",
    "container = M.new(type='c')  # Creating a container with a randomly generated name\n",
    "M.add_fact(\"closed\", container)  # Set the state of the container to 'closed'.\n",
    "roomB.add(container)  # Place the container in Room B\n",
    "\n",
    "M.render()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Finally, record the quest.\n",
    "Type all commands you would like to include in the quest given for this game. To end recording, either input `quit` or interrupt the kernel (the stop button above)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "\n",
      "                    ________  ________  __    __  ________\n",
      "                   |        \\|        \\|  \\  |  \\|        \\\n",
      "                    \\$$$$$$$$| $$$$$$$$| $$  | $$ \\$$$$$$$$\n",
      "                      | $$   | $$__     \\$$\\/  $$   | $$\n",
      "                      | $$   | $$  \\     >$$  $$    | $$\n",
      "                      | $$   | $$$$$    /  $$$$\\    | $$\n",
      "                      | $$   | $$_____ |  $$ \\$$\\   | $$\n",
      "                      | $$   | $$     \\| $$  | $$   | $$\n",
      "                       \\$$    \\$$$$$$$$ \\$$   \\$$    \\$$\n",
      "              __       __   ______   _______   __        _______\n",
      "             |  \\  _  |  \\ /      \\ |       \\ |  \\      |       \\\n",
      "             | $$ / \\ | $$|  $$$$$$\\| $$$$$$$\\| $$      | $$$$$$$\\\n",
      "             | $$/  $\\| $$| $$  | $$| $$__| $$| $$      | $$  | $$\n",
      "             | $$  $$$\\ $$| $$  | $$| $$    $$| $$      | $$  | $$\n",
      "             | $$ $$\\$$\\$$| $$  | $$| $$$$$$$\\| $$      | $$  | $$\n",
      "             | $$$$  \\$$$$| $$__/ $$| $$  | $$| $$_____ | $$__/ $$\n",
      "             | $$$    \\$$$ \\$$    $$| $$  | $$| $$     \\| $$    $$\n",
      "              \\$$      \\$$  \\$$$$$$  \\$$   \\$$ \\$$$$$$$$ \\$$$$$$$\n",
      "\n",
      "\n",
      "\n",
      "-= Room A =-\n",
      "You find yourself in a Room A.\n",
      "\n",
      "\n",
      "\n",
      "There is an exit to the east. Don't worry, it is unblocked.\n",
      "\n",
      "There is a note on the floor.\n",
      "\n",
      "Available actions: ['drop coffee cup', 'examine coffee cup', 'examine door', 'examine note', 'examine old key', 'examine plate', 'inventory', 'look', 'put coffee cup on plate', 'take note', 'take old key from plate']\n",
      "\n",
      "> take old key from plate\n",
      "You take the old key from the plate.\n",
      "\n",
      "Available actions: ['drop coffee cup', 'drop old key', 'examine coffee cup', 'examine door', 'examine note', 'examine old key', 'examine plate', 'inventory', 'look', 'put coffee cup on plate', 'put old key on plate', 'take note', 'unlock door with old key']\n",
      "\n",
      "> unlock door with old key\n",
      "You unlock door.\n",
      "\n",
      "Available actions: ['drop coffee cup', 'drop old key', 'examine coffee cup', 'examine door', 'examine note', 'examine old key', 'examine plate', 'inventory', 'lock door with old key', 'look', 'open door', 'put coffee cup on plate', 'put old key on plate', 'take note']\n",
      "\n",
      "> open it\n",
      "You open door.\n",
      "\n",
      "Available actions: ['close door', 'drop coffee cup', 'drop old key', 'examine coffee cup', 'examine door', 'examine note', 'examine old key', 'examine plate', 'go east', 'inventory', 'look', 'put coffee cup on plate', 'put old key on plate', 'take note']\n",
      "\n",
      "> go east\n",
      "\n",
      "-= Room B =-\n",
      "You're now in a Room B.\n",
      "\n",
      "\n",
      "\n",
      "You need an unguarded exit? You should try going west.\n",
      "\n",
      "Available actions: ['close door', 'drop coffee cup', 'drop old key', 'examine coffee cup', 'examine door', 'examine old key', 'examine refrigerator', 'go west', 'inventory', 'look', 'open refrigerator']\n",
      "\n",
      "> open refrigerator\n",
      "You open the refrigerator.\n",
      "\n",
      "Available actions: ['close door', 'close refrigerator', 'drop coffee cup', 'drop old key', 'examine coffee cup', 'examine door', 'examine old key', 'examine refrigerator', 'go west', 'insert coffee cup into refrigerator', 'insert old key into refrigerator', 'inventory', 'look']\n",
      "\n",
      "> insert coffee cup into refrigerator\n",
      "You put the coffee cup into the refrigerator.\n",
      "\n",
      "Available actions: ['close door', 'close refrigerator', 'drop old key', 'examine coffee cup', 'examine door', 'examine old key', 'examine refrigerator', 'go west', 'insert old key into refrigerator', 'inventory', 'look', 'take coffee cup from refrigerator']\n",
      "\n",
      "> quit\n",
      "Are you sure you want to quit?\n",
      "\n",
      "Available actions: ['close door', 'close refrigerator', 'drop old key', 'examine coffee cup', 'examine door', 'examine old key', 'examine refrigerator', 'go west', 'insert old key into refrigerator', 'inventory', 'look', 'take coffee cup from refrigerator']\n",
      "\n",
      "> yes\n",
      "+EXIT\u0010\n",
      "\n",
      "Available actions: ['close door', 'close refrigerator', 'drop old key', 'examine coffee cup', 'examine door', 'examine old key', 'examine refrigerator', 'go west', 'insert old key into refrigerator', 'inventory', 'look', 'take coffee cup from refrigerator']\n",
      "\n",
      "Done after 6 steps. Score 0/0.\n"
     ]
    }
   ],
   "source": [
    "quest = M.record_quest()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "take old key from plate > unlock door with old key > open door > go east > open refrigerator > insert coffee cup into refrigerator > insert coffee cup into refrigerator > insert coffee cup into refrigerator\n",
      "\n",
      "Hey, thanks for coming over to the TextWorld today, there is something I need you to do for me. Your first objective is to recover the old key from the plate within the Room A. Then, insert the old key into the door in the Room A's lock to unlock it. And then, ensure that the door is open. And then, make an effort to move east. Then, open the refrigerator inside the Room B. And then, you can put the coffee cup inside the refrigerator. Insert the coffee cup inside the refrigerator. Put the coffee cup inside the refrigerator in the Room B. Alright, thanks!\n"
     ]
    }
   ],
   "source": [
    "print(\" > \".join(quest.commands))\n",
    "print(\"\\n\" + quest.desc)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Trying out the game\n",
    "At any point, we can easily test the game we are currently building (if it can compile)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "\n",
      "                    ________  ________  __    __  ________\n",
      "                   |        \\|        \\|  \\  |  \\|        \\\n",
      "                    \\$$$$$$$$| $$$$$$$$| $$  | $$ \\$$$$$$$$\n",
      "                      | $$   | $$__     \\$$\\/  $$   | $$\n",
      "                      | $$   | $$  \\     >$$  $$    | $$\n",
      "                      | $$   | $$$$$    /  $$$$\\    | $$\n",
      "                      | $$   | $$_____ |  $$ \\$$\\   | $$\n",
      "                      | $$   | $$     \\| $$  | $$   | $$\n",
      "                       \\$$    \\$$$$$$$$ \\$$   \\$$    \\$$\n",
      "              __       __   ______   _______   __        _______\n",
      "             |  \\  _  |  \\ /      \\ |       \\ |  \\      |       \\\n",
      "             | $$ / \\ | $$|  $$$$$$\\| $$$$$$$\\| $$      | $$$$$$$\\\n",
      "             | $$/  $\\| $$| $$  | $$| $$__| $$| $$      | $$  | $$\n",
      "             | $$  $$$\\ $$| $$  | $$| $$    $$| $$      | $$  | $$\n",
      "             | $$ $$\\$$\\$$| $$  | $$| $$$$$$$\\| $$      | $$  | $$\n",
      "             | $$$$  \\$$$$| $$__/ $$| $$  | $$| $$_____ | $$__/ $$\n",
      "             | $$$    \\$$$ \\$$    $$| $$  | $$| $$     \\| $$    $$\n",
      "              \\$$      \\$$  \\$$$$$$  \\$$   \\$$ \\$$$$$$$$ \\$$$$$$$\n",
      "\n",
      "Welcome to another exciting episode of TextWorld! First step, pick up the old\n",
      "key from the plate. Then, look and see that the door is unlocked. Then, make it\n",
      "so that the door inside the Room A is open. And then, head east. Then, open the\n",
      "refrigerator. And then, deposit the coffee cup inside the refrigerator within\n",
      "the Room B. Got that? Good!\n",
      "\n",
      "-= Room A =-\n",
      "You find yourself in a Room A.\n",
      "\n",
      "\n",
      "\n",
      "There is an exit to the east. Don't worry, it is unblocked.\n",
      "\n",
      "There is a note on the floor.\n",
      "\n",
      "> take old key from plate\n",
      "You take the old key from the plate.\n",
      "\n",
      "> unlock door with old key\n",
      "You unlock door.\n",
      "\n",
      "> open door\n",
      "You open door.\n",
      "\n",
      "> go east\n",
      "\n",
      "-= Room B =-\n",
      "You're now in a Room B.\n",
      "\n",
      "\n",
      "\n",
      "You need an unguarded exit? You should try going west.\n",
      "\n",
      "> open refrigerator\n",
      "You open the refrigerator.\n",
      "\n",
      "> insert coffee cup into refrigerator\n",
      "You put the coffee cup into the refrigerator.\n",
      "\n",
      "\n",
      "Your score has just gone up by one point.\n",
      "\n",
      "\n",
      "                               *** The End ***\n",
      "\n",
      "You scored 1 out of a possible 1, in 7 turn(s).\n",
      "\n",
      "\n",
      "Would you like to RESTART, RESTORE a saved game, QUIT or UNDO the last command?\n",
      ">\n",
      "\n",
      "Done after 6 steps. Score 1/1.\n"
     ]
    }
   ],
   "source": [
    "# Test the game by issuing commands from the generated walkthrough.\n",
    "# You can set `walkthrough=False` if you want to play the game yourself. \n",
    "M.test(walkthrough=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Randomly generate quests for your game"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<PIL.Image.Image image mode=RGB size=795x600 at 0x7F37C74124E0>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import copy\n",
    "M2 = copy.deepcopy(M)  # Work on a copy.\n",
    "M2.generate_distractors(10)  # Add 10 objects for the agent to interact with.\n",
    "M2.render()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "I hope you're ready to go into rooms and interact with objects, because you've just entered TextWorld! Here is how to play! First thing I need you to do is to lift the note from the floor of the Room A. And then, place the note on the platter. And then, retrieve the nest of puppies from the plate. With the nest of puppies, drop the nest of puppies on the floor of the Room A. After dropping the nest of puppies, retrieve the knife from the plate within the Room A. After stealing the knife, put the knife on the chair in the Room A. And then, pick-up the legume from the floor of the Room A. And then, put the legume on the plate within the Room A. After you have put the legume on the plate, retrieve the onion from the plate. Then, ditch the onion on the floor of the Room A. That's it!\n"
     ]
    }
   ],
   "source": [
    "M2.generate_random_quests(5, length=2)  # Generate 5 random quests of length 2.\n",
    "game = M2.build()\n",
    "print(game.objective)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "\n",
      "\n",
      "                    ________  ________  __    __  ________\n",
      "                   |        \\|        \\|  \\  |  \\|        \\\n",
      "                    \\$$$$$$$$| $$$$$$$$| $$  | $$ \\$$$$$$$$\n",
      "                      | $$   | $$__     \\$$\\/  $$   | $$\n",
      "                      | $$   | $$  \\     >$$  $$    | $$\n",
      "                      | $$   | $$$$$    /  $$$$\\    | $$\n",
      "                      | $$   | $$_____ |  $$ \\$$\\   | $$\n",
      "                      | $$   | $$     \\| $$  | $$   | $$\n",
      "                       \\$$    \\$$$$$$$$ \\$$   \\$$    \\$$\n",
      "              __       __   ______   _______   __        _______\n",
      "             |  \\  _  |  \\ /      \\ |       \\ |  \\      |       \\\n",
      "             | $$ / \\ | $$|  $$$$$$\\| $$$$$$$\\| $$      | $$$$$$$\\\n",
      "             | $$/  $\\| $$| $$  | $$| $$__| $$| $$      | $$  | $$\n",
      "             | $$  $$$\\ $$| $$  | $$| $$    $$| $$      | $$  | $$\n",
      "             | $$ $$\\$$\\$$| $$  | $$| $$$$$$$\\| $$      | $$  | $$\n",
      "             | $$$$  \\$$$$| $$__/ $$| $$  | $$| $$_____ | $$__/ $$\n",
      "             | $$$    \\$$$ \\$$    $$| $$  | $$| $$     \\| $$    $$\n",
      "              \\$$      \\$$  \\$$$$$$  \\$$   \\$$ \\$$$$$$$$ \\$$$$$$$\n",
      "\n",
      "Who's got a virtual machine and is about to play through an fast paced round of\n",
      "TextWorld? You do! First of all, recover the note from the floor of the Room A.\n",
      "And then, rest the note on the rack. If you have put the note on the rack,\n",
      "recover the whisk from the plate inside the Room A. Having picked up the whisk,\n",
      "place the whisk on the floor of the Room A. Then, take the blender from the\n",
      "plate inside the Room A. And then, sit the blender on the saucepan inside the\n",
      "Room A. And then, pick-up the legume from the floor of the Room A. And then,\n",
      "rest the legume on the plate inside the Room A. After setting the legume on the\n",
      "plate, retrieve the sandwich from the plate. Then, toss the sandwich on the\n",
      "floor of the Room A. And once you've done that, you win!\n",
      "\n",
      "-= Room A =-\n",
      "You find yourself in a Room A.\n",
      "\n",
      "\n",
      "\n",
      "There is an exit to the east. Don't worry, it is unblocked.\n",
      "\n",
      "There is a legume, a fondue and a note on the floor.\n",
      "\n",
      "> take note\n",
      "You pick up the note from the ground.\n",
      "\n",
      "> put note on rack\n",
      "You put the note on the rack.\n",
      "\n",
      "\n",
      "Your score has just gone up by one point.\n",
      "\n",
      "> take whisk from plate\n",
      "You take the whisk from the plate.\n",
      "\n",
      "> drop whisk\n",
      "You drop the whisk on the ground.\n",
      "\n",
      "\n",
      "Your score has just gone up by one point.\n",
      "\n",
      "> take blender from plate\n",
      "You take the blender from the plate.\n",
      "\n",
      "> put blender on saucepan\n",
      "You put the blender on the saucepan.\n",
      "\n",
      "\n",
      "Your score has just gone up by one point.\n",
      "\n",
      "> take legume\n",
      "You pick up the legume from the ground.\n",
      "\n",
      "> put legume on plate\n",
      "You put the legume on the plate.\n",
      "\n",
      "\n",
      "Your score has just gone up by one point.\n",
      "\n",
      "> take sandwich from plate\n",
      "You take the sandwich from the plate.\n",
      "\n",
      "> drop sandwich\n",
      "You drop the sandwich on the ground.\n",
      "\n",
      "\n",
      "Your score has just gone up by one point.\n",
      "\n",
      "\n",
      "                               *** The End ***\n",
      "\n",
      "You scored 5 out of a possible 5, in 11 turn(s).\n",
      "\n",
      "\n",
      "Would you like to RESTART, RESTORE a saved game, QUIT or UNDO the last command?\n",
      ">\n",
      "\n",
      "Done after 10 steps. Score 5/5.\n"
     ]
    }
   ],
   "source": [
    "# Test the game by issuing commands from the walkthrough.\n",
    "M2.test(walkthrough=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Handcrafting your game"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import textworld\n",
    "from textworld import GameMaker\n",
    "\n",
    "# Make the generation process reproducible.\n",
    "from textworld import g_rng  # Global random generator.\n",
    "g_rng.set_seed(20180329)\n",
    "\n",
    "# GameMaker object for handcrafting text-based games.\n",
    "M = GameMaker()\n",
    "\n",
    "# ... build your game here.\n",
    "\n",
    "# Uncomment the following lines to record a quest.\n",
    "# quest = M.record_quest()\n",
    "# print(\" > \".join(quest.commands))\n",
    "# print(\"\\n\" + quest.desc)\n",
    "M.test()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Common Errors\n",
    "- `FailedConstraintsError`: One the constraints has failed. You need to resolve the issue before being able to compile the game. The most common issues:\n",
    "    - Two objects cannot have the exact same name. Names can be composed of multiple words.\n",
    "    - A same objects was added twice to a container, supporter, room or inventory.\n",
    "- `ValueError: Could not determine status '' of container/door ...`: You have to provide the status (a fact) of the door/container, i.e. 'open', 'closed' or 'locked'."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
